home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-08-29 | 2.1 KB | 107 lines | [TEXT/MPS ] |
- {$S Dispatcher}
-
- (* ------------------------------------------------- *)
- (* DISPATCHER UNIT *)
- (* ------------------------------------------------- *)
- (* Purpose: Channel all menu actions to their dest- *)
- (* ination. In particular, notice the *)
- (* INLINE function necessary to get Pascal *)
- (* to call MacTutor Help. *)
- (* ------------------------------------------------- *)
-
- UNIT Dispatcher;
-
- INTERFACE
-
- USES
- MemTypes,QuickDraw,OSIntf,ToolIntf,PackIntf, Resources,
- Utilities;
-
- CONST
- MBarID = 256;
- AppleID = 256;
- FileID = 257;
- EditID = 258;
- HelpItem = 1;
- QuitItem = 2;
- AboutItem = 1;
- OK_Button = 1;
- AboutWIndow = 400;
-
- PROCEDURE Handle_My_Menu(var doneFlag:boolean; theMenu,theItem:integer);
-
- IMPLEMENTATION
-
- PROCEDURE Call_Code(routine: Ptr);
- INLINE $205F, { MOVEA.L (A7)+,A0 }
- $4E90; { JMP (A0) }
-
- PROCEDURE Handle_My_Menu;
-
- VAR
- DNA : integer;
- BoolHolder : boolean;
- DAName : Str255;
- thePtr : DialogPtr;
- savePort : GrafPtr;
- whatHit : integer;
- ticks : longint;
- h : Handle;
-
- BEGIN
- CASE theMenu OF
- AppleID:
- CASE theItem OF
- AboutItem:
- BEGIN
- thePtr := GetNewDialog(AboutWindow, NIL, Pointer(-1));
- CenterWindow(thePtr,0);
- ShowWindow(thePtr);
- SelectWindow(thePtr);
- SetPort(thePtr);
- BoldButton(thePtr,OK_Button);
- ModalDialog(NIL,whatHit);
- DisposDialog(thePtr);
- END;
-
- otherwise
- BEGIN
- GetPort(SavePort);
- GetItem(GetMHandle(AppleID), theItem, DAName);
- DNA := OpenDeskAcc(DAName);
- SetPort(SavePort);
- END;
- END;
-
- FileID:
- CASE theItem OF
- HelpItem:
- BEGIN
- h := GetResource('HELP',128);
- if ((ResError = noErr) AND (h <> NIL)) THEN
- BEGIN
- HLock(h);
- Call_Code(h^);
- HUnlock(h);
- END
- ELSE
- SysBeep(1);
- END;
-
- QuitItem:
- BEGIN
- Delay(8,ticks);
- FlashMenuBar(FileID);
- doneFlag := TRUE;
- END;
-
- otherwise;
- END;
-
- otherwise;
- END;
- HiliteMenu(0);
- END;
- END.
-
-